<?php

namespace App\Http\Controllers\admin;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Controller;
use DB;
use Mail;
class LinkController extends Controller
{
    /**
    *   申请友情连接显示列表页面
    */
    public function getIndex(Request $request)
    {
        // 将选择过链接方式，但没有提交申请的用户删掉
        DB::table('link') -> where('phone',null) -> delete();

        // 接受搜索的关键字
        $search = $request -> input('search','');

        // 接受每页显示的条数
        $count = $request -> input('count',10); 

        // 获取店铺审核表(link)里面的数据信息
        $data = DB::table('link') -> where('phone','like','%'.$search.'%') -> orderBy('state','asc') -> orderBy('time','asc')  -> paginate($count);
        return view('admin.link.index',['data'=>$data,'request'=>$request -> all()]);
    }

    /**
    *   用户申请店铺的详细信息显示
    */
    public function getInformation($id)
    {
        // 查询审核表(link)里面对应id一条数据
        $data = DB::table('link') -> where('id','=',$id) -> first();
        // dd($data);
        return view('admin.link.information',['data'=>$data]);  
    }

    /**
    *   针对管理员是否同意用户申请的状态的修改
    */
    public function postUpdate(Request $request)
    {
        // 获取隐藏域传过来的id
        $arr = $request -> except('_token');
        // dd($arr);
        // 查询审核表(link)里面对应id一条数据
        $data = DB::table('link') -> where('id','=',$arr['id']) -> first();

        $timelength = $data['timelength'];

        // 获取管理员处理时间，并压入$arr中
        $arr['atime'] = time();

        // 用session获取获取处理申请管理员的id
        $arr['aid'] = session('adminid');

        // 计算链接到期时间
        $arr['endtime'] = $arr['atime'] + $timelength*24*3600;

        // dd($arr);
        // 修改数据
        $res = DB::table('link') ->where('id',$arr['id']) -> update($arr);
        // dd($res);
        // 判断返回的影响行数 把操作的结果压入session
        if ($res > 0) {
            // 修改数据 结束的时间
            DB::table('link') ->where('id',$arr['id']) -> update($arr);


            // 调用发送邮件的方法
            // self::sendemail($data);

            return redirect('/admin/link/index') -> with('success','修改成功');
        }else{
            return back() -> with('error','修改失败');
        }
    }


    /**
    *   发送邮件的方法
    */
    // static public function sendemail($data)
    // {
    //     Mail::send('emails.link', ['data' => $data] ,function($m) use($data) {
    //         $m -> to($data['email'],'亲爱的用户') -> subject('友情链接申请成功');
    //     });
    // }

    // /**
    // *   模拟前台用户申请页面
    // */
    // public function getAdd(Request $request)
    // {
    //     $mode = $request -> input('mode');

    //     return view('admin.link.add',['mode'=>$mode]);  
    // }

    // /**
    // *   mode.balde.php页面提交过来的post
    // */
    // public function postAdd()
    // {
    //     return view('admin.link.add');  
    // }

    // /**
    // *  选择申请方式页面
    // */
    // public function getMode()
    // {       
    //     return view('admin.link.mode');
    // } 

    // /**
    // *  在link表中插入选择方式状态
    // */
    // public function postMode(Request $request)
    // {
    //     // 数据处理
    //     $arr = $request -> except('_token');

    //     // 获取选择时间，并压入$arr中
    //     $arr['time'] = time();

    //     // 插入数据库
    //     $res = DB::table('link') -> insert($arr);

    //     $data = DB::table('link') -> orderBy('time','desc') -> first();

    /**
    *   模拟前台用户申请页面
    */
    public function getAdd(Request $request)
    {
        $mode = $request -> input('mode');

        return view('admin.link.add',['mode'=>$mode]);  
    }

    /**
    *   mode.balde.php页面提交过来的post
    */
    public function postAdd()
    {
        return view('admin.link.add');  
    }

    /**
    *  选择申请方式页面
    */
    public function getMode()
    {       
        return view('admin.link.mode');
    } 

    /**
    *  在link表中插入选择方式状态
    */
    public function postMode(Request $request)
    {
        // 数据处理
        $arr = $request -> except('_token');

        // 获取选择时间，并压入$arr中
        $arr['time'] = time();

        // 插入数据库
        $res = DB::table('link') -> insert($arr);

        $data = DB::table('link') -> orderBy('time','desc') -> first();

       
    //     $mode = $data['mode'];

    //     // 判断返回的影响行数 把操作的结果压入session
    //     if ($res) {
    //         return redirect('/admin/link/add?mode='.$mode) -> with('success','选择成功');
    //     }else{
    //         return back() -> with('error','选择失败');
    //     }
    // } 

    // /**
    // *  在link表中刚插入状态的最后一条数据
    // */
    // public function postInsert(Request $request)
    // {
    //     if($request){
    //         // 查询link表  获取最后一条插入的数据id
    //         $data = DB::table('link') -> orderBy('time','desc') -> first();
    //         $id = $data['id'];
    //         $mode = $request -> input('mode');

    //         // 插入数据
    //         // 自动验证表单
    //         if ($mode == 1) {
    //             $this -> validate($request,[
    //             'phone' => 'required',
    //             'email' => 'required|email',
    //             'timelength' => 'required',
    //             'words' => 'required',
    //             'url' => 'required|url',
    //             'contents' => 'required',
    //             ],
    //             [
    //                 'phone.required' => '手机号码不能为空',
    //                 'email.required' => '邮箱不能为空',
    //                 'email.email' => '邮箱格式不正确',
    //                 'timelength.required' => '请填写要开通的天数',
    //                 'words.required' => '连接名不能为空', 
    //                 'url.required' => 'url地址不能为空',
    //                 'url.url' => 'url地址格式不正确',
    //                 'contents.required' => '链接描述不能为空不能为空',
    //             ]); 
    //         }else if($mode == 2){
    //             $this -> validate($request,[
    //             'phone' => 'required',
    //             'email' => 'required|email',
    //             'timelength' => 'required',
    //             'image' => 'required', 
    //             'url' => 'required|url',
    //             'contents' => 'required',
    //             ],
    //             [
    //                 'phone.required' => '手机号码不能为空',
    //                 'email.required' => '邮箱不能为空',
    //                 'email.email' => '邮箱格式不正确',
    //                 'timelength.required' => '请填写要开通的天数',
    //                 'image.required' => '图片不能为空',
    //                 'url.required' => 'url地址不能为空',
    //                 'url.url' => 'url地址格式不正确',
    //                 'contents.required' => '网站介绍不能为空',
    //             ]);

    //         }
          
    //         // 数据处理
    //         $arr = $request -> except('_token');
    //         // dd($arr);
    //         if ($mode == 2) {
    //             if ($request->hasFile('image')) {
    //                 // 获取图片后缀
    //                 $suffix = $request -> file('image') -> getClientOriginalExtension();

    //                 //设置图片名称 
    //                 $name = date('YmdHis',time());

    //                 // 判断图片后缀名
    //                 $array = ['jpg','png','gif','jpeg'];
    //                 if (in_array($suffix,$array)) {
    //                     $arr['image'] = '/ad/linkimage/'.$name.'.'.$suffix;
    //                     $request -> file('image') -> move('./ad/linkimage',$name.'.'.$suffix);
    //                 }else{
    //                    return back() -> with('error','文件格式不正确');
    //                 }
    //             }
    //         }
           
    //         // 获取提交时间，并压入$arr中
    //         $arr['time'] = time();

    //         // 修改数据库
    //         $res = DB::table('link') -> where('id',$id) -> update($arr);

    //         // 判断返回的影响行数 把操作的结果压入session
    //         if ($res) {
    //             return redirect('/admin/link/index') -> with('success','申请已提交，请等待管理员审核！');
    //         }else{
    //             return back() -> with('error','申请失败');
    //         }
    //     }
    }

    // 删除操作
    public function getDelete($id)
    {
        // 查询数据
        $arr = DB::table('link') -> where('id','=',$id) -> first();

        // dd($arr);
        // 删除对应id的数据
        $res = DB::table('link') -> where('id','=',$id) -> delete();

        if($arr['image']){
            // 删除服务器中的对应id的图片
            $res1 = unlink('.'.$arr['image']);
        }
       
        // 判断返回的影响行数 把操作的结果压入session
        if ($res > 0 ) {
            return redirect('/admin/link/index') -> with('success','删除成功');
        }else{
            return back() -> with('error','删除失败');
        }
    }
    // 修改操作
    public function getEdit($id)
    {
        // 修改页面
        $data = DB::table('link') ->where('id',$id)-> first();

        return view('admin.link.edit',['data'=>$data]);
    }

    // 用户修改
    public function postUpdates(Request $request)
    {
        // 获取隐藏域传过来的id
        $id = $request -> only('id');

        // 提取参数
        $arr = $request -> except('_token','id');
        
         // 查询数据
        $data = DB::table('link') -> where('id','=',$id) -> first();
        // 判断图片是否修改
        if ($request -> hasFile('image')) {

            // 获取图片后缀
            $suffix = $request -> file('image') -> getClientOriginalExtension();

            //设置图片名称 
            $name = date('YmdHis',time());

            // 判断图片后缀名格式->拼接
            $array = ['jpg','png','gif','jpeg'];
            if (in_array($suffix,$array)) {
                $arr['image'] = '/ad/image/'.$name.'.'.$suffix;
                $request -> file('image') -> move('./ad/image',$name.'.'.$suffix);

                // 删除服务器中的对应id的图片
                unlink('.'.$data['image']);
                
            }else{
               return back() -> with('error','文件格式不正确');
            }
        }

        // 开通时长 = 开始时长 + 增加时长
        $arr['timelength'] = $data['timelength'] + $arr['timelength'];

        // 结束时间 = 原来结束时间 + 刚增加的时间
        $arr['endtime'] = $data['endtime'] + $arr['timelength']*24*3600;

        // 修改数据
        $res = DB::table('link') ->where('id',$id) -> update($arr);
        
        // 判断返回的影响行数 把操作的结果压入session
        if ($res > 0) {
            return redirect('/admin/link/index') -> with('success','修改成功');
        }else{
            return back() -> with('error','修改失败');
        }
    }

}
